package com.seecen.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.seecen.pojo.dto.PetDTO;
import com.seecen.pojo.entity.Pet;
import com.seecen.service.PetService;
import com.seecen.mapper.PetMapper;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;

/**
* @author 98746
* @description 针对表【sys_pet】的数据库操作Service实现
* @createDate 2025-10-16 14:56:35
*/
@Service
public class PetServiceImpl extends ServiceImpl<PetMapper, Pet>
    implements PetService{

    @Autowired
    PetMapper petMapper;

    @Override
    public Pet addPet(PetDTO petDTO) {
        // 参数校验
        if (petDTO == null) {
            throw new IllegalArgumentException("宠物信息不能为空");
        }

        if (petDTO.getPetName() == null || petDTO.getPetName().trim().isEmpty()) {
            throw new IllegalArgumentException("宠物名称不能为空");
        }

        // 检查宠物名是否重复
        Pet existingPet = petMapper.selectByPetName(petDTO.getPetName());
        if (existingPet != null) {
            throw new IllegalArgumentException("宠物名称已存在");
        }

        // 创建Pet实体对象
        Pet pet = new Pet();
        // 复制相同属性值
        BeanUtils.copyProperties(petDTO, pet);

        // 设置创建时间和更新时间
        Date now = new Date();
        pet.setCreateTime(now);
        pet.setUpdateTime(now);

        // 设置版本号
        pet.setVersion(1);
        
        // 确保设置了userId
        if (petDTO.getUserId() == null) {
            throw new IllegalArgumentException("用户ID不能为空");
        }
        pet.setUserId(petDTO.getUserId().intValue()); // 确保设置userId

        // 保存到数据库
        // 使用petMapper.insert方法时，确保所有非空字段都被正确设置
        int result = petMapper.insert(pet);
        if (result <= 0) {
            throw new RuntimeException("保存宠物信息失败");
        }

        return pet;
    }
}
